package com.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

public class FilesystemUtil {
	/**
	 */
	public static void escribirArchivo(String directorio, String nombreArchivo,
			byte[] data) throws Exception {
		File file = new File(directorio, nombreArchivo);
		try {
			FileUtils.writeByteArrayToFile(file, data);
		} catch (IOException e) {
			throw e;
		}
	}

	/**
	 */
	public static void borrarArchivo(String directorio, String nombreArchivo)
			throws Exception {
		File file = new File(directorio, nombreArchivo);

		try {
			FileUtils.forceDelete(file);
		} catch (IOException e) {
			throw e;
		}
	}

	/**
	 */
	public static byte[] obtenerArchivo(String directorio, String nombreArchivo)
			throws Exception {
		File file = new File(directorio, nombreArchivo);

		try {
			return FileUtils.readFileToByteArray(file);
		} catch (IOException e) {
			throw e;
		}
	}

	/**
	 */
	public static long obtenerTamanioArchivoBytes(String directorio,
			String nombreArchivo) throws Exception {
		File file = new File(directorio, nombreArchivo);

		return FileUtils.sizeOf(file);
	}

	public static File streamAFile(InputStream in) throws IOException {

		final File tempFile = File.createTempFile("stream2file", ".tmp");
		tempFile.deleteOnExit();

		try (FileOutputStream out = new FileOutputStream(tempFile)) {
			IOUtils.copy(in, out);
		}

		return tempFile;
	}
}
